package com.it.base.leetcode.day1;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * 给定一个整数数组，判断是否存在重复元素。
 *
 * 如果存在一值在数组中出现至少两次，函数返回 true 。如果数组中每个元素都不相同，则返回 false 。
 */
public class Topic217 {
    /**
     * 时间复杂度太高 ，通过了19个测试用例
     * @param nums
     * @return
     */
    public static boolean containsDuplicate1(int[] nums) {
        boolean bl = false;
        int length =nums.length;
        for(int i =0;i<length;i++){

            int count = 0;
            for(int j=0;j<nums.length;j++){
                if(nums[i]==nums[j]){
                    count++;
                }
            }
            if(count>1){
                bl=true;
                break;
            }
        }
        return bl;
    }

    /**
     * 可以去重复之后的大小和num的大小比较
     * @param nums
     * @return
     */
    public static boolean containsDuplicate2(int[] nums) {
        boolean bl = false;
        Set set = new HashSet<>();
        for (int tmp:nums){
            set.add(tmp);
        }

        if(set.size()!=nums.length){
            bl = true;
        }
        return bl;
    }
    public static void main(String[] args) {
        int[] nums=new int[]{1,2,3,4};
       boolean  bl1 =   containsDuplicate1(nums);
        System.out.println(bl1);
        boolean  bl2 =   containsDuplicate2(nums);
        System.out.println(bl2);

    }
}
